package com.cskaoyan.javase.oop3._2inner._4anonymous._1basic;

/**
 * 匿名内部类对象的语法:
 * new 类名/接口名(){
 *   // 匿名子类的类体
 * };
 * 匿名内部类的匿名子类类体中的成员特点:
 *      没有静态声明,和局部内部类一样
 *      但是要注意
 *      匿名子类的类名不可知,且匿名内部类的语法结构中也不能给匿名子类的构造器传参
 *      所以匿名内部类不需要构造器,也没法定义构造器
 *
 * 语法结构中的"()"是单纯语法结构还是有用的?
 * "()"是有用的,是可以传参的,参数是传给父类的构造器的
 * 类包括普通类和抽象类都是有构造器的
 * 但是接口是没有构造器
 * 所以如果匿名内部类创建的是接口的子类对象
 * 那么"()"就是单纯语法结构,没有任何用途
 *
 *
 * @since 11:05
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(new A(6666) {
        }.num);

        System.out.println(new B(7777) {
        }.num);

        new C() {
        };
    }
}

interface C {
}

abstract class B {
    int num;

    public B(int num) {
        this.num = num;
    }
}

class A {
    int num;

    public A(int num) {
        this.num = num;
    }
}